Repository navigation
fix: fail e2e scenarios when a required node dies - #416
Conversation
|
I think it is not completely fixed yet. Some of the predicates are still partial. For example, There are also still join paths that only print thread join failures and then continue to “All nodes shut down cleanly” / Each scenario should define the required participant set and either assert progress for each required node or assert the expected clean shutdown/removal for intentionally stopped/withdrawn nodes, and join failures should become nonzero scenario failures. |
|
Update(b4507b1):
|
|
Thanks. I think there is one remaining similar path in So I think the update fixes my comment for the touched paths, but I would still patch |
|
Update(018839f):
|
|
This looks good to me. |
Addresses #318.
Changes:
Handle<anyhow::Result<()>>and run_node_local_inner returns the supervise_node_tasks outcome instead of logging-and-swallowing it. Still noprocess::exitthere (would orphan the child reth processes) — the caller decides.stake_and_checkpoint,stake_and_join_with_outdated_ckpt,withdraw_and_exit,sync_from_genesis,observer,verify_consensus_state_proof,protocol_params): each node spawn closure now fails the scenario (eprintln+exit(1)) when run_node_local returnsErr. Safe against the intentionally-exiting withdrawn/stopped nodes, which take a coordinated-shutdown path and returnOk. Required making the spawn closuresmove(the message captures the Copy node index).try_join_allnow inspects each node's inner Result and logs failures.